package com.bitoon.basketdudes.web.jpa;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import org.hibernate.annotations.Formula;

@Entity
@Table(name = "est_jugador_partido", schema="basket")
@NamedQueries({
    /*
    @NamedQuery(name = "EstJugadorPartido.findAll", query = "SELECT e FROM EstJugadorPartido e"),
    @NamedQuery(name = "EstJugadorPartido.findByPartidoId", query = "SELECT e FROM EstJugadorPartido e WHERE e.estJugadorPartidoPK.partidoId = :partidoId"),
    @NamedQuery(name = "EstJugadorPartido.findByJugadorId", query = "SELECT e FROM EstJugadorPartido e WHERE e.estJugadorPartidoPK.jugadorId = :jugadorId"),
    @NamedQuery(name = "EstJugadorPartido.findByMinutos", query = "SELECT e FROM EstJugadorPartido e WHERE e.minutos = :minutos"),
    @NamedQuery(name = "EstJugadorPartido.findByPuntos", query = "SELECT e FROM EstJugadorPartido e WHERE e.puntos = :puntos"),
    @NamedQuery(name = "EstJugadorPartido.findByTirosUno", query = "SELECT e FROM EstJugadorPartido e WHERE e.tirosUno = :tirosUno"),
    @NamedQuery(name = "EstJugadorPartido.findByUno", query = "SELECT e FROM EstJugadorPartido e WHERE e.uno = :uno"),
    @NamedQuery(name = "EstJugadorPartido.findByTirosDos", query = "SELECT e FROM EstJugadorPartido e WHERE e.tirosDos = :tirosDos"),
    @NamedQuery(name = "EstJugadorPartido.findByDos", query = "SELECT e FROM EstJugadorPartido e WHERE e.dos = :dos"),
    @NamedQuery(name = "EstJugadorPartido.findByTirosTres", query = "SELECT e FROM EstJugadorPartido e WHERE e.tirosTres = :tirosTres"),
    @NamedQuery(name = "EstJugadorPartido.findByTres", query = "SELECT e FROM EstJugadorPartido e WHERE e.tres = :tres"),
    @NamedQuery(name = "EstJugadorPartido.findByRebotesAtaque", query = "SELECT e FROM EstJugadorPartido e WHERE e.rebotesAtaque = :rebotesAtaque"),
    @NamedQuery(name = "EstJugadorPartido.findByRebotesDefensa", query = "SELECT e FROM EstJugadorPartido e WHERE e.rebotesDefensa = :rebotesDefensa"),
    @NamedQuery(name = "EstJugadorPartido.findByAsistencias", query = "SELECT e FROM EstJugadorPartido e WHERE e.asistencias = :asistencias"),
    @NamedQuery(name = "EstJugadorPartido.findByRobos", query = "SELECT e FROM EstJugadorPartido e WHERE e.robos = :robos"),
    @NamedQuery(name = "EstJugadorPartido.findByPerdidas", query = "SELECT e FROM EstJugadorPartido e WHERE e.perdidas = :perdidas"),
    @NamedQuery(name = "EstJugadorPartido.findByTapones", query = "SELECT e FROM EstJugadorPartido e WHERE e.tapones = :tapones"),
    @NamedQuery(name = "EstJugadorPartido.findByTaponesContra", query = "SELECT e FROM EstJugadorPartido e WHERE e.taponesContra = :taponesContra"),
    @NamedQuery(name = "EstJugadorPartido.findByMates", query = "SELECT e FROM EstJugadorPartido e WHERE e.mates = :mates"),
    @NamedQuery(name = "EstJugadorPartido.findByFaltas", query = "SELECT e FROM EstJugadorPartido e WHERE e.faltas = :faltas"),
    @NamedQuery(name = "EstJugadorPartido.findByFaltasContra", query = "SELECT e FROM EstJugadorPartido e WHERE e.faltasContra = :faltasContra"),
    @NamedQuery(name = "EstJugadorPartido.findByResumen", query = "SELECT e FROM EstJugadorPartido e WHERE e.resumen = :resumen")
     * 
     */
    @NamedQuery(name = "EstJugadorPartido.findByPartidoIdEquipoId",
        query = "SELECT e FROM EstJugadorPartido e WHERE e.estJugadorPartidoPK.partidoId = :partidoId "
        + "AND e.estJugadorPartidoPK.jugador.equipo.id = :equipoId"),
    @NamedQuery(name = "EstJugadorPartido.findByPartidoIdEquipoIdOrderPuntosDesc",
        query = "SELECT e FROM EstJugadorPartido e WHERE e.estJugadorPartidoPK.partidoId = :partidoId "
        + "AND e.estJugadorPartidoPK.jugador.equipo.id = :equipoId ORDER BY puntos DESC, valoracion DESC"),
    @NamedQuery(name = "EstJugadorPartido.findByPartidoIdEquipoIdOrderRebotesDesc",
        query = "SELECT e FROM EstJugadorPartido e WHERE e.estJugadorPartidoPK.partidoId = :partidoId "
        + "AND e.estJugadorPartidoPK.jugador.equipo.id = :equipoId ORDER BY rebotes DESC, valoracion DESC"),
    @NamedQuery(name = "EstJugadorPartido.findByPartidoIdEquipoIdOrderAsistenciasDesc",
        query = "SELECT e FROM EstJugadorPartido e WHERE e.estJugadorPartidoPK.partidoId = :partidoId "
        + "AND e.estJugadorPartidoPK.jugador.equipo.id = :equipoId ORDER BY asistencias DESC, valoracion DESC")
})
public class EstJugadorPartido implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    private EstJugadorPartidoPK estJugadorPartidoPK;
    @Column(name = "minutos")
    private float minutos;
    @Column(name = "puntos")
    private Short puntos;
    @Column(name = "tiro1")
    private Short tiro1;
    @Column(name = "pto1")
    private Short pto1;
    @Column(name = "tiro2")
    private Short tiro2;
    @Column(name = "pto2")
    private Short pto2;
    @Column(name = "tiro3")
    private Short tiro3;
    @Column(name = "pto3")
    private Short pto3;
    @Column(name = "rebotes_ataque")
    private Short rebotesAtaque;
    @Column(name = "rebotes_defensa")
    private Short rebotesDefensa;
    @Column(name = "asistencias")
    private Short asistencias;
    @Column(name = "robos")
    private Short robos;
    @Column(name = "perdidas")
    private Short perdidas;
    @Column(name = "tapones")
    private Short tapones;
    @Column(name = "tapones_contra")
    private Short taponesContra;
    @Column(name = "faltas")
    private Short faltas;
    @Column(name = "faltas_contra")
    private Short faltasContra;
    @Column(name = "valoracion")
    private Short valoracion;
    @Column(name = "experiencia")
    private Short experiencia;

    @Formula("rebotes_ataque + rebotes_defensa")
    private int rebotes;
    public int getRebotes() {
        return (rebotesAtaque+rebotesDefensa);
    }

    public EstJugadorPartido() {
    }

    public EstJugadorPartido(EstJugadorPartidoPK estJugadorPartidoPK) {
        this.estJugadorPartidoPK = estJugadorPartidoPK;
    }

    /*
    public EstJugadorPartido(int partidoId, int jugadorId) {
        this.estJugadorPartidoPK = new EstJugadorPartidoPK(partidoId, jugadorId);
    }
     * 
     */

    public EstJugadorPartidoPK getEstJugadorPartidoPK() {
        return estJugadorPartidoPK;
    }

    public void setEstJugadorPartidoPK(EstJugadorPartidoPK estJugadorPartidoPK) {
        this.estJugadorPartidoPK = estJugadorPartidoPK;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (getEstJugadorPartidoPK() != null ? getEstJugadorPartidoPK().hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof EstJugadorPartido)) {
            return false;
        }
        EstJugadorPartido other = (EstJugadorPartido) object;
        if ((this.getEstJugadorPartidoPK() == null && other.getEstJugadorPartidoPK() != null) || (this.getEstJugadorPartidoPK() != null && !this.estJugadorPartidoPK.equals(other.estJugadorPartidoPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.bitoon.basketdudes.jpa.web.EstJugadorPartido[estJugadorPartidoPK=" + getEstJugadorPartidoPK() + "]";
    }

    public float getMinutos() {
        return minutos;
    }

    public void setMinutos(float minutos) {
        this.minutos = minutos;
    }

    public Short getPuntos() {
        return puntos;
    }

    public void setPuntos(Short puntos) {
        this.puntos = puntos;
    }

    public Short getTiro1() {
        return tiro1;
    }

    public void setTiro1(Short tiro1) {
        this.tiro1 = tiro1;
    }

    public Short getPto1() {
        return pto1;
    }

    public void setPto1(Short pto1) {
        this.pto1 = pto1;
    }

    public Short getTiro2() {
        return tiro2;
    }

    public void setTiro2(Short tiro2) {
        this.tiro2 = tiro2;
    }

    public Short getPto2() {
        return pto2;
    }

    public void setPto2(Short pto2) {
        this.pto2 = pto2;
    }

    public Short getTiro3() {
        return tiro3;
    }

    public void setTiro3(Short tiro3) {
        this.tiro3 = tiro3;
    }

    public Short getPto3() {
        return pto3;
    }

    public void setPto3(Short pto3) {
        this.pto3 = pto3;
    }

    public Short getRebotesAtaque() {
        return rebotesAtaque;
    }

    public void setRebotesAtaque(Short rebotesAtaque) {
        this.rebotesAtaque = rebotesAtaque;
    }

    public Short getRebotesDefensa() {
        return rebotesDefensa;
    }

    public void setRebotesDefensa(Short rebotesDefensa) {
        this.rebotesDefensa = rebotesDefensa;
    }

    public Short getAsistencias() {
        return asistencias;
    }

    public void setAsistencias(Short asistencias) {
        this.asistencias = asistencias;
    }

    public Short getRobos() {
        return robos;
    }

    public void setRobos(Short robos) {
        this.robos = robos;
    }

    public Short getPerdidas() {
        return perdidas;
    }

    public void setPerdidas(Short perdidas) {
        this.perdidas = perdidas;
    }

    public Short getTapones() {
        return tapones;
    }

    public void setTapones(Short tapones) {
        this.tapones = tapones;
    }

    public Short getTaponesContra() {
        return taponesContra;
    }

    public void setTaponesContra(Short taponesContra) {
        this.taponesContra = taponesContra;
    }

    public Short getFaltas() {
        return faltas;
    }

    public void setFaltas(Short faltas) {
        this.faltas = faltas;
    }

    public Short getFaltasContra() {
        return faltasContra;
    }

    public void setFaltasContra(Short faltasContra) {
        this.faltasContra = faltasContra;
    }

    public Short getValoracion() {
        return valoracion;
    }

    public void setValoracion(Short valoracion) {
        this.valoracion = valoracion;
    }

    public Short getExperiencia() {
        return experiencia;
    }

    public void setExperiencia(Short experiencia) {
        this.experiencia = experiencia;
    }

    /* Métodos auxiliares para que la web funcione mejor */

    public float getPorc1() {
        float retorno = 0f;
        if (tiro1 > 0) {
            retorno = pto1/(float)tiro1 * 100;
        }
        return retorno;
    }

    public float getPorc2() {
        float retorno = 0f;
        if (tiro2 > 0) {
            retorno = pto2/(float)tiro2 * 100;
        }
        return retorno;
    }

    public float getPorc3() {
        float retorno = 0f;
        if (tiro3 > 0) {
            retorno = pto3/(float)tiro3 * 100;
        }
        return retorno;
    }

}
